/***************************************************************************
 *
 * Copyright (c) 2013 Baidu, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 **************************************************************************/
// Author: Wen Xiang <bigflow-opensource@baidu.com>

#include "flume/flume.h"

#include <cstdlib>

#include "gflags/gflags.h"
#include "toft/base/scoped_ptr.h"

#include "flume/runtime/backend.h"
#include "flume/runtime/counter.h"

// from now on, the header file is only for comake2 rely
#include "flume/util/comake_rely.h"


#include "toft/storage/file/hdfs_file.h"
#include "toft/storage/file/local_file.h"

DECLARE_bool(flume_execute);

namespace baidu {
namespace flume {

void never_call();

void InitBaiduFlume() {
    if (FLAGS_flume_execute) {
        runtime::Backend::RunAsWorker();
        std::exit(0);
        never_call();  // for comake2_rely. if we do not use this, the obj files will not be linked
    }
}

void ResetGlobalCounters() {
    runtime::CounterSession::GlobalCounterSession()->ResetAllCounters();
}

void never_call() {
    COMAKE_RELY(toft::HDFSFileSystem);
    COMAKE_RELY(toft::LocalFileSystem);
}

}  // namespace flume
}  // namespace baidu
